package com.app;

import java.awt.Color;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.nio.charset.Charset;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public class CommandPromptApp {
  public static void main(String[] args) {
    // 设置文件编码为UTF-8以支持中文
    System.setProperty("file.encoding", "UTF-8");

    // 输出当前使用的字符集，用于调试
    System.out.println("当前字符集: " + Charset.defaultCharset());

    try {
      // 尝试使用系统外观，但保留自定义颜色设置
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

      // 设置菜单栏在macOS上的集成
      System.setProperty("apple.laf.useScreenMenuBar", "true");

      // 在高DPI显示器上适当缩放
      System.setProperty("sun.java2d.uiScale", "1.0");
    } catch (Exception e) {
      System.err.println("无法设置系统外观: " + e.getMessage());
      try {
        // 如果无法使用系统外观，尝试使用默认跨平台外观
        UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
      } catch (Exception ex) {
        System.err.println("无法设置跨平台外观: " + ex.getMessage());
      }
    }

    // 使用SwingUtilities来确保GUI在EDT线程中创建
    SwingUtilities.invokeLater(() -> {
      // 关闭窗口装饰，模拟CMD窗口风格
      JFrame.setDefaultLookAndFeelDecorated(false);

      ReaderWindow readerWindow = new ReaderWindow();

      // 移除标题栏和边框
      readerWindow.setUndecorated(true);

      // 设置窗口边框颜色
      readerWindow.getRootPane().setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 1));

      // 无论系统主题如何，都应用CMD风格主题
      readerWindow.setCmdTheme();

      // 启用自定义的窗口拖动支持
      readerWindow.addCustomWindowDragSupport();

      readerWindow.setVisible(true);

      // 添加关闭钩子，确保应用程序正常退出时清理资源
      Runtime.getRuntime().addShutdownHook(new Thread(() -> {
        readerWindow.dispose();
      }));
    });
  }
}